home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / Libraries / SAT 2.3.8 / Demos / StepPlatform Demo ƒ / PlatformGlobals.p < prev    next >
Text File  |  1996-05-11  |  3KB  |  77 lines

  1. unit PlatformGlobals;
  2.  
  3. interface
  4.  
  5.     uses
  6. {$ifc UNDEFINED THINK_PASCAL}
  7.         Types, QuickDraw, Menus, Windows, TextEdit, Fonts,{}
  8.         Dialogs, Memory, Events,{}
  9. {$endc}
  10.         SAT;
  11.  
  12. {Variation on the Sprite record.}
  13.     type
  14.         PlSpritePtr = ^PlSprite;
  15.         PlSprite = record
  16. { Variables that you should change as appropriate }
  17.                 kind: Integer; { Used for identification. >0: friend. <0 foe }
  18.                 position: Point;
  19.                 hotRect, hotRect2: Rect; { Tells how large the sprite is; hotRect is centered around origo }
  20.                                         {hotRect is set by you. hotRect2 is offset to the current position.}
  21.                 face: FacePtr;                    { Pointer to the Face (appearance) to be used. }
  22.                 task: ProcPtr;                     { Callback-routine, called once per frame. If task=nil, the sprite is removed. }
  23.                 hitTask: ProcPtr;             { Callback in collisions. }
  24.                 destructTask: ProcPtr;    { Called when a sprite is disposed. (Usually nil.) }
  25.                 clip: RgnHandle;                {Clip region to be used when this sprite is drawn.}
  26. { SAT variables that you shouldn't change: }
  27.                 oldpos: Point;                    {The 'task' routine is not allowed to change this! }
  28.                 next, prev: SpritePtr;    {You may change them in your own sorting routine, but be careful if you do.}
  29.                 r, oldr: Rect;                    {Rectangle telling where to draw. Avoid messing with it.}
  30.                 oldFace: FacePtr;                {Used by RunSAT2}
  31.                 dirty: Boolean;                    {Used by RunSAT2}
  32. {Variables for internal use by the sprites. Use as you please. Edit as necessary - this is merely a default}
  33. {set, enough space for most cases - but if you change the size of the record, call SetSpriteSize immediately}
  34. {after initializing (before any sprites are created)!}
  35.                 layer: integer;         {For layer-sorting. When not used for that, use freely.}
  36.                 speed: Point;             { Can be used for speed, but not necessarily. }
  37.                 mode: integer;            { Usually used for different modes and/or to determine what image to show next. }
  38.                 worldPosition: Point;
  39.                 action, jumpKey: Integer;
  40.                 appPtr: Ptr;                {Pointer for use by the application - i.e. pointer to extra data}
  41. {                appLong: Longint;        {Longint for free use by the application.}
  42.             end;
  43.  
  44. (* Actions    *)
  45.     const
  46.         ActionMsgNumber = 5;
  47.  
  48.         Stand = 0;    {id=128}
  49.         StandOnHMovPlatform = 1;    {id=129 the player stands on HMov so he gets his speedH}
  50.         Jump = 2;    {id=130}
  51.         JumpFromHMov = 3;    {id=131 jump from HMov Platform}
  52.         Fall = 4;    {id=132}
  53.  
  54.     (* JumpKey    *)
  55.         Pushed = 1;
  56.         NotPushed = 0;
  57.  
  58.     type
  59.         MovPlatRec = record
  60.                 MaxV, MinV: Integer;
  61.                 MaxH, MinH: Integer;
  62.                 filled: Integer; {/ / unused }
  63.             end;
  64.         MovPlatP = ^MovPlatRec;
  65.  
  66.     function IsPressed (k: Integer): Boolean;
  67.  
  68. implementation
  69.  
  70.     function IsPressed (k: Integer): Boolean;
  71.         var
  72.             km: KeyMap;
  73.     begin
  74.         GetKeys(km);
  75.         IsPressed := km[k];
  76.     end;
  77. end.